Ana içeriğe geç

İkili Arama

İkili arama, bir sıralı dizide belirli bir öğenin konumunu bulmak için kullanılan etkili bir arama algoritmasıdır. Algoritma, dizinin ortasındaki öğeyi hedef öğe ile karşılaştırır ve hedef öğenin sol veya sağ tarafında kalan yarısını atarak aramayı sürdürür.

bilgi

İkili arama algoritması yalnızca sıralı dizilerde uygulanabilir. Dizinin sıralı olması, algoritmanın doğru bir şekilde çalışabilmesi için kritik öneme sahiptir.

Aşağıdaki C kodu, bir sıralı dizi içinde aranan bir öğenin konumunu bulmak için ikili arama algoritmasını göstermektedir:

#include <stdio.h>

int binary_search(int arr[], int left, int right, int key) {
if (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == key) {
return mid; // öğe bulunduğunda konumunu döndürür
} else if (arr[mid] > key) {
return binary_search(arr, left, mid - 1, key); // sol yarıyı arar
} else {
return binary_search(arr, mid + 1, right, key); // sağ yarıyı arar
}
}
return -1; // öğe bulunamadığında -1 döndürür
}

int main() {
int arr[] = {1, 2, 3, 4, 5, 6};
int size = sizeof(arr) / sizeof(arr[0]);
int key = 4;

int result = binary_search(arr, 0, size - 1, key);

if (result == -1) {
printf("Öğe bulunamadı.");
} else {
printf("Öğe %d konumunda bulundu.", result);
}
return 0;
}
ipucu

Kodunuzun verimli çalışmasını sağlamak için, her zaman giriş dizisinin sıralı olduğundan emin olun. Ayrıca, dizinin boyutunu iyi yönetmek önemlidir.

Bu kod örneğinde, binary_search fonksiyonu, arr sıralı dizisinde left ve right indisleri arasında aranan key öğesini bulmak için kullanılır. Fonksiyon, dizinin ortasındaki öğe ile hedef öğe karşılaştırır ve hedef öğenin sol veya sağ tarafında kalan yarıyı atarak aramayı sürdürür. Bu işlem, hedef öğe bulunana kadar devam eder.

not

İkili arama algoritması, zaman karmaşıklığı açısından O(log n)'dir, bu da büyük verilerle çalışırken oldukça etkilidir.

main fonksiyonu, örnek bir sıralı dizi ve aranacak öğe belirler ve binary_search fonksiyonunu kullanarak öğenin konumunu bulur. Eğer öğe bulunamazsa "Öğe bulunamadı." çıktısı verilir, bulunursa "Öğe `` konumunda bulundu." şeklinde çıktı verilir.